package com.immortal.core.service;

import com.immortal.core.module.file.FileResult;
import com.immortal.core.module.file.UploadFileExt;
import org.springframework.core.io.Resource;

import java.io.File;
import java.io.InputStream;
import java.nio.file.Path;
import java.util.stream.Stream;

/**
 *
 * <p>文件存储基类
 * @author         wind
 * @version        1.0
 */
public interface StorageService {
    /**
     *  预初始化
     */
    void init();

    /**
     * 上传
     * @param ue 上传模型
     * @return FileResult
     */
    FileResult store(UploadFileExt ue);

    /**
     *  加载全部
     * @return Stream<Path>
     */
    Stream<Path> loadAll();

    /**
     * 加载单个
     * @param filename 文件名字
     * @return Path
     */
    Path load(String filename);

    /**
     * 加载单个
     * @param groupName 组名
     * @param fileName 文件名字
     * @return
     */
    File load(String groupName, String fileName);
    /**
     * 加载单个
     * @param groupName 组名
     * @param fileName 文件名字
     * @return
     */
    InputStream loadAsInputStream(String groupName, String fileName);
    /**
     * 加载单个
     * @param filename 文件名字
     * @return Resource
     */
    Resource loadAsResource(String filename);

    /**
     * 删除所有
     */
    void deleteAll();

    String storageName();


}
